package com.itheima.text01;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class Demo0605 {
    //随机点名器
    public static void main(String[] args) throws IOException
    {
      /*需求：一个文件里面存储了班级同学的姓名，每一个姓名占一行。
        要求通过程序实现随机点名器。

        运行结果要求：
        被点到的学生不会再被点到。
        但是如果班级中所有的学生都点完了， 需要重新开启第二轮点名。

        核心思想：
        点一个删一个，把删除的备份，全部点完时还原数据。*/

        //先获取所有的学生信息
        String src="11.txt";//学生信息文件
        String backups="backups.txt";//备份文件
        //读取信息到集合中
        ArrayList<String> list = readline(src);

        if(list.size()==0)//当前学生集合为空，说明点名一轮结束
        {//将备份过的学生信息重新读取到学生集合当中
            list=readline(backups);
            //通过集合将所有数据写回初始文件中
           writeline(src,list,false);
            //删除备份文件
            new File(backups).delete();
        }

        //当前初始文件中还可以继续随机点名
        BufferedReader br=new BufferedReader(new FileReader("11.txt"));
        Collections.shuffle(list);
        String s = list.get(0);
        String deleName = list.remove(0);
        String s1 = s.split("-")[0];
        System.out.println("当前被点到的学生为："+s1);
        //将删除的学生信息续写到备份文件中
        writeline(src, list, false);
        writeline(src,deleName,true);

    }
//将删除学生的数据备份到续写文件中
    public static void writeline(String src,String str,boolean isappend) throws IOException {
       BufferedWriter bw=new BufferedWriter(new FileWriter(src, isappend));
       bw.write(str);
       bw.newLine();
       bw.close();
    }
    //将学生信息写回初始文件
   private static void writeline(String src,ArrayList<String> list,boolean isappend) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter(src, isappend));
        for (String str : list) {
            bw.write(str);
            bw.newLine();
        }
        bw.close();
    }

    //获取学生的信息到集合当中
    public static ArrayList<String> readline(String src) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("11.txt"));
       ArrayList<String> list=new ArrayList<>();
        String line;
        while((line=br.readLine())!=null)
        {
            list.add(line.split("-")[0]);
        }
        br.close();
        return list;
    }
}
